package com.stepshop.wechat.utils;

import java.util.HashMap;
import java.util.Map;

public class Tenpay {
	/**
	 *微信支付测试类 
	 *1,获取签名 String sign= Signature.getSign
	 *2,拼组xml文档
	 *
	 */
	public static void main(String[] args) {
		//1,处理xml文档
		//map -->xml
		String xml="";
		Map<String,String> paramMaps=new HashMap<String, String>();
		//String xml = "<xml><appid>wxd152167cedf23e16</appid><attach>支付测试</attach><body>JSAPI支付测试</body><mch_id>1324751901</mch_id><nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str><notify_url>http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php</notify_url><openid>o3QjlwGBjeKHvc16IR-sMO8KXvec</openid><out_trade_no>1415659990</out_trade_no><spbill_create_ip>14.23.150.211</spbill_create_ip><total_fee>1</total_fee><trade_type>JSAPI</trade_type><sign>50C7849B2624E0749C8F99FBB2BA60C2</sign></xml>";
		//
		paramMaps.put("appid", "wxd152167cedf23e16");
		//
		paramMaps.put("mch_id", "1324751901");
		//随机字符串 不长于32位  (后台生成)
		paramMaps.put("nonce_str", "1add1a30ac87aa2db72f57a2375d8fec");
		//attach   附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
		paramMaps.put("attach", "支付测试");
		//商品描述  商品或支付单简要描述
		paramMaps.put("body", "JSAPI支付测试");
		//商户订单号  商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
		//传参过来   
		paramMaps.put("out_trade_no", "1415659990");
		//总金额 订单总金额，单位为分，详见支付金额
		// 前台得来
		paramMaps.put("total_fee", "1");
		//终端IP  APP和网页支付提交用户端ip，Native支付填调用微信支付API的机器IP
		// 用户ip
		paramMaps.put("spbill_create_ip", "14.23.150.211");
		//通知地址 	接收微信支付异步通知回调地址，通知url必须为直接可访问的url，不能携带参数。
		// 是否前台传入待定
		paramMaps.put("notify_url", "http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php");
		//交易类型 JSAPI  
		paramMaps.put("trade_type", "JSAPI");
		//用户标识     可在session中获取
		paramMaps.put("openid", "o3QjlwGBjeKHvc16IR-sMO8KXvec");
		
		String sign = Signature.getSign(paramMaps);
		paramMaps.put("sign",sign);
		String xmlToPost= XMLUtil.map2Xml(paramMaps,"xml");
		//2,发送post-- https 请求 获得返回参数
		HttpClientUtil httpClientUtil = new HttpClientUtil();
		String callBackXml = httpClientUtil.doPost("", "","utf-8");
		//解析callbackXml 
//		XMLUtil.doXMLParse(strxml);
		//parse callbackXml
		//3,生成jsapi页面调用的支付参数并签名   --> 返回让用户支付
		//4,
	}
}
